﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ParkingYunService
{
    public class ByteUtil
    {
        public static int getLength(String str)
        {
            return getBytes(str).Length;
        }

        public static byte[] getBytes(String data, String charsetName)
        {
            return System.Text.Encoding.GetEncoding(charsetName).GetBytes(data);
        }

        public static byte[] getBytes(String data)
        {
            return getBytes(data, "GBK");
        }

        public static byte[] getBytes(short data)
        {
            byte[] bytes = new byte[2];
            bytes[0] = (byte)(data & 0xFF);
            bytes[1] = (byte)((data & 0xFF00) >> 8);
            return bytes;
        }

        public static byte[] getBytes(char c, int count)
        {
            byte[] bytes = new byte[count];
            for (int i = 0; i < bytes.Length; ++i)
            {
                bytes[i] = (byte)c;
            }
            return bytes;
        }

        public static byte[] getBytes(int data)
        {
            byte[] bytes = new byte[4];
            bytes[0] = (byte)(data & 0xFF);
            bytes[1] = (byte)((data & 0xFF00) >> 8);
            bytes[2] = (byte)((data & 0xFF0000) >> 16);
            bytes[3] = (byte)((data & 0xFF000000) >> 24);
            return bytes;
        }

        public static byte[] getBytes(long data)
        {
            byte[] bytes = new byte[8];
            bytes[0] = (byte)(int)(data & 0xFF);
            bytes[1] = (byte)(int)(data >> 8 & 0xFF);
            bytes[2] = (byte)(int)(data >> 16 & 0xFF);
            bytes[3] = (byte)(int)(data >> 24 & 0xFF);
            bytes[4] = (byte)(int)(data >> 32 & 0xFF);
            bytes[5] = (byte)(int)(data >> 40 & 0xFF);
            bytes[6] = (byte)(int)(data >> 48 & 0xFF);
            bytes[7] = (byte)(int)(data >> 56 & 0xFF);
            return bytes;
        }

        public static byte[] getBytes(float data)
        {
            int intBits = BitConverter.ToInt32(BitConverter.GetBytes(data), 0);

            return getBytes(intBits);
        }

    }
}
